Multivariable solver for optical proximity correction

ABSTRACT

The method of the invention tracks how the collective movement of edge segments in a mask layout alters the resist image values at control points in the layout and simultaneously determines a correction amount for each edge segment in the layout. A multisolver matrix that represents the collective effect of movements of each edge segment in the mask layout is used to simultaneously determine the correction amount for each edge segment in the mask layout.

FIELD OF THE INVENTION

This invention relates generally to resolution enhancement technologies for photolithography masks, and relates more particularly to a multivariable solver for optical proximity correction.

BACKGROUND

In the semiconductor industry, microlithography (or simply lithography) is the process of printing circuit patterns on a semiconductor wafer (for example, a silicon or GaAs wafer). Currently, optical lithography is the predominant technology used in volume manufacturing of semiconductor devices and other devices such as flat-panel displays. Such lithography employs light in the visible to the deep ultraviolet spectral range to expose photosensitive resist on a substrate. In the future, extreme ultraviolet (EUV) and soft x-rays may be employed. Following exposure, the resist is developed to yield a relief image.

In optical lithography, a photomask (often called a mask or a reticle) that serves as a template for the device structures to be manufactured is first written using electron-beam or laser-beam direct-write tools. A typical photomask for optical lithography consists of a glass (or quartz) plate of six to eight inches on a side, with one surface coated with a thin metal layer (for example, chrome) of a thickness of about 100 nm. The device pattern is etched into the metal layer, hence allowing light to transmit through the clear areas. The areas where the metal layer is not etched away block light transmission. In this way, a pattern may be projected onto a semiconductor wafer.

The mask contains certain patterns and features that are used to create desired circuit patterns on a wafer. The tool used in projecting the mask image onto the wafer is called a “stepper” or “scanner” (hereinafter collectively called “exposure tool”). FIG. 1 is a diagram of an optical projection lithographic system 10 of a conventional exposure tool. System 10 includes an illumination source 12, an illumination pupil filter 14, a lens subsystem 16 a-c, a mask 18, a projection pupil filter 20, and a wafer 22 on which the aerial image of mask 18 is projected. Illumination source 12 may be a laser source operating, for example, at UV (ultra-violet) or DUV (deep ultra-violet) wavelengths. The light beam of illumination source 12 is expanded and scrambled before it is incident on illumination pupil 14. Illumination pupil 14 may be a simple round aperture, or may have specifically designed shapes for off-axis illumination. Off-axis illumination may include, for example, annular illumination (i.e., illumination pupil 14 is a ring with a designed inner and outer radii), quadruple illumination (i.e., illumination pupil 14 has four openings in the four quadrants of the pupil plane), and others such as dipole illumination.

After illumination pupil 14, the light passes through the illumination optics (for example, lens subsystem 16 a) and is incident on mask 18, which contains the circuit pattern to be imaged on wafer 22 by the projection optics. As the desired pattern size on wafer 22 becomes smaller and smaller, and the features of the pattern become closer and closer to each other, the lithography process becomes more challenging. The projection optics (for example, lens subsystems 16 b and 16 c, and projection pupil filter 20) images mask 18 onto wafer 22. Pupil 20 of the projection optics limits the maximum spatial frequency of the mask pattern that can be passed through the projection optics system. A number called “numerical aperture” or NA often characterizes pupil 20.

When the resist is exposed by the projected image and thereafter baked and developed, the resist tends to undergo complex chemical and physical changes. The final resist patterns are typically characterized by their critical dimensions, or CD, usually defined as the width of a resist feature at the resist-substrate interface. While the CD is usually intended to represent the smallest feature being patterned in the given device, in practice the term CD is used to describe the linewidth of any resist feature.

In most exposure tools, the optical system reduces the size of the pattern from the mask level to the wafer level by a reduction factor, typically 4× or 5×. Because of this the pattern at the mask level is typically larger than the desired pattern at the wafer level, which relaxes the dimensional control tolerances required at the mask level and improves the yield and manufacturability of the mask-making process. This reduction factor of the exposure tool introduces a certain confusion in referring to “the dimension” of the exposure process. Herein, features sizes and dimensions refer to wafer-level feature sizes and dimensions, and the “minimum feature size” refers to a minimum feature at the wafer level.

For an exposure process to pattern a device correctly, the CDs of all critical structures in the device must be patterned to achieve the design target dimensions. Since it is practically impossible to achieve every target CD with no errors, the device is designed with a certain tolerance for CD errors. In this case, the pattern is considered to be acceptable if the CDs of all critical features are within these predefined tolerances. For the exposure process to be viable in a manufacturing environment, the full CD distribution must fall within the tolerance limits across a range of process conditions that represents the typical range of process variations expected to occur in the fab.

Factors that limit or degrade the fidelity of the pattern transfer process include imperfections in the mask-making process, in the projection optics, in the resist process, and in the control of the interaction between the projected light and the film stacks formed on the wafer. However, even with a perfect mask, perfect optics, a perfect resist system, and perfect substrate reflectivity control, image fidelity becomes difficult to maintain as the dimensions of the features being imaged become smaller than the wavelength of light used in the exposure tool. For exposure processes using 193 nm illumination sources, features as small as 65 nm are desired. In this deep sub-wavelength regime, the pattern transfer process becomes highly non-linear, and the dimensions of the final pattern at the wafer level become a very sensitive function not only of the size of the pattern at the mask level, but also of the local environment of the feature, where the local environment extends out to a radius of roughly five to ten times the wavelength of light. Given the very small feature sizes compared to the wavelength, even identical structures on the mask will have different wafer-level dimensions depending on the sizes and proximities of neighboring features, and even features that are not immediately adjacent but still within the proximity region defined by the optics of the exposure tool. These optical proximity effects are well known in the literature.

In an effort to improve imaging quality and minimize high non-linearity in the pattern transfer process, current processing techniques employ various resolution enhancement technologies (“RET”). One of the leading types of RETs in use today is optical proximity correction (OPC), a general term for any technology aimed at overcoming proximity effects. One of the simplest forms of OPC is selective bias. Given a CD vs. pitch curve, all of the different pitches could be forced to produce the same CD, at least at best focus and exposure, by changing the CD at the mask level. Thus, if a feature prints too small at the wafer level, the mask level feature would be biased to be slightly larger than nominal, and vice versa. Since the pattern transfer process from mask level to wafer level is non-linear, the amount of bias is not simply the measured CD error at best focus and exposure times the reduction ratio, but with modeling and experimentation an appropriate bias can be determined. Selective bias is an incomplete solution to the problem of proximity effects, particularly if it is only applied at the nominal process condition. Even though such bias could, in principle, be applied to give uniform CD vs. pitch curves at best focus and exposure, once the exposure process varies from the nominal condition, each biased pitch curve will respond differently, resulting in different process windows for the different features. Therefore, the “best” bias to give identical CD vs. pitch may even have a negative impact on the overall process window, reducing rather than enlarging the focus and exposure range within which all of the target features print on the wafer within the desired process tolerance.

Other more complex OPC techniques have been developed for application beyond the one-dimensional bias example above. A two-dimensional proximity effect is line end shortening. Line ends have a tendency to “pull back” from their desired end point location as a function of exposure and focus. In many cases, the degree of end shortening of a long line end can be several times larger than the corresponding line narrowing. This type of line end pull back can result in catastrophic failure of the devices being manufactured if the line end fails to completely cross over the underlying layer it was intended to cover, such as a polysilicon gate layer over a source-drain region. Since this type of pattern is highly sensitive to focus and exposure, simply biasing the line end to be longer than the design length is inadequate because the line at best focus and exposure, or in an underexposed condition, would be excessively long, resulting either in short circuits as the extended line end touches neighboring structures, or unnecessarily large circuit sizes if more space is added between individual features in the circuit. Since one of the key goals of integrated circuit design and manufacturing is to maximize the number of functional elements while minimizing the area required per chip, adding excess spacing is a highly undesirable solution.

Two-dimensional OPC approaches have been developed to help solve the line end pull back problem. Extra structures (or assist features) known as “hammerheads” or “serifs” are routinely added to line ends to effectively anchor them in place and provide reduced pull back over the entire process window. Even at best focus and exposure these extra structures are not clearly resolved and they alter the appearance of the main feature without being fully resolved on their own. Assist features can take on much more aggressive forms than simple hammerheads added to line ends, to the extent the pattern on the mask is no longer simply the desired wafer pattern upsized by the reduction ratio. Assist features such as serifs can be applied to many more cases than simply reducing line end pull back. Inner or outer serifs can be applied to any edge, especially two dimensional edges, to reduce corner rounding or edge extrusions. With enough selective biasing and assist features of all sizes and polarities, the features on the mask bear less and less of a resemblance to the final pattern desired at the wafer level. In general, the mask pattern becomes a pre-distorted version of the wafer-level pattern, where the distortion is intended to counteract or reverse the pattern deformation that will occur during the lithographic process to produce a pattern on the wafer that is as close to the one intended by the designer as possible.

In another OPC technique, instead of appending assist structures such as serifs to a feature, completely independent and non-resolvable assist features are added to the mask. These independent assist features are not intended or desired to print as features on the wafer, but rather are intended to modify the aerial image of a nearby main feature to enhance the printability and process tolerance of that main feature. Often referred to as “scattering bars,” this type of sub-resolution assist feature (SRAF) adds yet another layer of complexity to a mask. A simple example of a use of scattering bars is where a regular array of non-resolvable scattering bars is drawn on both sides of an isolated line feature, which has the effect of making the isolated line appear, from an aerial image standpoint, to be more representative of a single line within an array of dense lines, resulting in a process window much closer in focus and exposure tolerance to that of a dense pattern. The common process window between such a decorated isolated feature and a dense pattern will have a larger common tolerance to focus and exposure variations than that of a feature drawn as isolated at the mask level.

Many of these OPC techniques must be used together on a single mask with phase-shifting structures of different phases added in as well for both resolution and process window enhancement. The simple task of biasing a one-dimensional line becomes increasingly complicated as two-dimensional structures must be moved, resized, enhanced with assist features, and possibly phase-shifted without causing any conflict with adjoining features. Due to the extended proximity range of deep sub-wavelength lithography, changes in the type of OPC applied to a feature can have unintended consequences for another feature located within half a micron to a micron. Since there are likely to be many features within this proximity range, the task of optimizing OPC decoration becomes increasingly complex with the addition of more aggressive approaches. Each new feature that is added to a design has an effect on other features, which then must be re-corrected in turn, and the results must be iterated repeatedly to converge to a mask layout where each feature can be printed in the manner in which it was originally intended while at the same time contributing in the proper manner to the aerial images of its neighboring features such that they too are printed within their respective tolerances.

Due to this complexity and mutual interaction between features, OPC technology has become a major field of innovation and many techniques have been widely described on how to “segment” or “dissect” the features into a manageable number of edges for co-optimization, how to prioritize the optimization routines so that the most critical structures are best protected from unintended distortion by nearby OPC assist features on neighboring features, how to resolve phase and placement conflicts between features, how to trade off computational speed versus ultimate convergence of the resulting feature to the desired results, and other details of the full implementation of OPC as a manufacturable technology.

OPC has generally moved from a rule-based to a model-based approach. In model-based OPC, both the effect of the exposure tool on the aerial image and the effect of the resist processing are modeled mathematically. FIG. 2 is a flowchart showing a typical model-based OPC design process. In step 210, a pre-OPC layout, an OPC technology file, an optical model, and a resist model are obtained. The OPC technology file describes the types of model-based OPC techniques that are to be used, for example linewidth bias corrections, corner rounding corrections, or line end pull back corrections. The optical model describes the illumination and projection optics of the exposure tool. The optical model may also include the effect of imaging into a thin-film resist or the effect of the mask topography. The resist model describes the changes in the resist after being illuminated by the mask pattern in the exposure tool. An etch model may also be used in the method of FIG. 2. The optical, resist, and etch models can be derived from first principles, determined empirically from experimental data, or a combination of both. The models are usually calibrated at the nominal process condition. See R. Socha, “Resolution Enhancement Techniques,” Photomask Fabrication Technology, Benjamin G. Eynon, Jr. and Banqiu Wu, Editors, McGraw-Hill, pp. 466-468, 2005. The pre-OPC layout, the OPC technology file, and the models are all inputs to the model-based OPC software.

In step 212, the model-based OPC software dissects the features in the pre-OPC layout into edge segments and assigns control points to each edge segment. Each feature is dissected prior to applying any OPC techniques because each feature, even identically-shaped features, will be subject to different proximity environments. The control points (or evaluation points) are the locations where CD or edge placement errors (EPE) will be evaluated during the OPC design process. The assignment of the control points is a complex process that depends on the pattern geometry of the pre-OPC layout and the optical model. FIG. 3 shows an L-shaped feature 310 with dissection points represented by triangles and assigned control points represented by circles.

In step 214, the model-based OPC software simulates the printed resist image on the wafer by applying the optical model and the resist model to the pre-OPC layout. In general, the simulation is performed at the nominal process condition at which the optical model has been calibrated. In step 216, the model-based OPC software generates the contours of the simulated resist image by comparing the simulated resist image values to a predetermined threshold value. The model-based OPC software then compares the simulated contours with the pre-OPC layout at all of the control points to determine if the design layout will deliver the desired patterning performance. The comparisons are typically quantified as a CD or an EPE at each control point. In step 218, the model-based OPC software determines whether a figure of merit for the contour metric of each edge segment is satisfied. In one embodiment, the figure of merit is satisfied when the total error for the contour metric, e.g., CD or EPE, of each edge segment is minimized. In another embodiment, the figure of merit is satisfied when the total error for the contour metric of each edge segment is below a predetermined threshold. If the figure of merit is satisfied the process ends, but if the figure of merit is not satisfied, the process continues with step 220.

FIG. 4 shows two EPEs with opposite signs measured at two control points. If an assumed simulated resist image contour 414 does not overlap the feature's designed geometry 412 at the control point, then the EPE is determined based on the difference at that control point. Returning to FIG. 2, in step 220 the model-based OPC software calculates the edge correction amount at each control point. If it is assumed that the EPE of the i-th edge segment (E_(i)) is ΔE_(i) determined at control point C_(i), the simplest edge correction amount ΔL_(i) is a negation of the error: ΔL_(i)=−ΔE_(i). Such a straightforward correction function does not work well for non-linear processes because changes on the mask are not linearly reflected in the printed resist image. To account for nonlinearities such as the mask error factor (MEF), a slightly more complicated correction function can be used:

${\Delta\; L_{i}} = {- {\frac{\Delta\; E_{i}}{MEF}.}}$

In a real application, the method of calculating the appropriate correction is much more complex, and the correction algorithms can depend on factors such as linewidth error, fabrication process, correction goals, and constraints. See A. K. Wong, Resolution Enhancement Techniques in Optical Lithography, SPIE Press, pp. 91-115, 2001. For example, if it is assumed that there are N edge segments of a feature and one control point for each edge segment, and that the correction amount for the i-th edge segment is ΔL_(i), the ultimate goal is to solve for ΔL₁, ΔL₂, . . . , ΔL_(N), such that the difference between resist image values RI(C_(i)) and the predetermined threshold values T at all control points are equal to zero as: RI(C _(i))−T=0 for i=1, . . . , N, where C _(i) are the control points. Or minimize the function

$\sum\limits_{i = 1}^{N}\;\left\lbrack {{{RI}\left( C_{i} \right)} - T} \right\rbrack^{2}$

Next, in step 222, the model-based OPC software adjusts the entire edge segment E_(i) according to the calculated correction amount ΔL_(i) for all edge segments to produce a post-OPC layout, such that the simulated resist image contour moves to match the design geometry. Then the method returns to step 214, where the model-based OPC software simulates a resist image using the post-OPC layout produced in step 222. The resist image contours and error are then calculated for the simulated resist image produced using the post-OPC layout in step 216. In step 218 the model-based OPC software determines whether the total EP error is minimized or below a certain threshold. The total EP error may be defined as:

${Error}_{total} = {\sum\limits_{i = 1}^{N}\;\left( {\Delta\; E_{i}} \right)^{2}}$ Alternatively, the total EP error can be defined as the maximum EP error of all segments, i.e., max{|ΔE _(i) |}, i=1, . . . , N since the OPC goal may be set such that all edge placement error must be below a certain threshold.

In the method of FIG. 2, the correction amount is determined individually for each edge segment in the mask layout, without taking into account effects from the movements of other edge segments in the layout. As feature size decreases, solving for the correction amount for individual edge segments experiences convergence problems. What is needed is a technique for determining correction amounts for each edge segment that takes into account the movements of other edge segments in the layout.

SUMMARY

The method of the invention tracks how the collective movement of edge segments in a mask layout alters the resist image values at control points in the layout and simultaneously determines a correction amount for each edge segment in the layout. A multisolver matrix that represents the collective effect of movements of each edge segment in the mask layout is used to simultaneously determine the correction amount for each edge segment in the mask layout.

In one embodiment, the method of the invention includes simulating a photolithography process using a mask layout to produce a first simulated resist image, perturbing each edge segment in the mask layout by a predetermined amount to produce an initial perturbed layout, simulating the photolithography process using the initial perturbed layout to produce a second simulated resist image, determining a difference value between the first simulated resist image and the second simulated resist image for each edge segment, creating a multisolver matrix that includes the difference values for all edge segments, determining a correction delta vector using a pseudoinverse of the multisolver matrix, wherein the correction delta vector includes a correction delta value for each edge segment, perturbing each edge segment in the perturbed layout by the corresponding correction delta value in the correction delta vector to create a further perturbed layout, simulating the photolithography process using the further perturbed layout to produce a third simulated resist image, updating the multisolver matrix based on the third simulated resist image values for each edge segment, and updating the correction delta vector using a pseudoinverse of the updated multisolver matrix.

In one embodiment, the method of the invention includes multiplying a damping factor to each value in the correction delta vector prior to adjusting the locations of the edge segments in the mask layout according to the correction delta vector.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of one embodiment of a lithography system;

FIG. 2 is a flowchart of method steps for model-based OPC;

FIG. 3 is a diagram of a feature including edge segments and control points;

FIG. 4 is a diagram of a feature and an assumed simulated resist image showing edge placement errors;

FIG. 5 is a diagram of contact features including edge segments and control points;

FIG. 6 is a flowchart of method steps for simultaneously solving for corrections for edge segments in a mask layout, according to one embodiment of the invention;

FIG. 7 is a diagram of plots of resist image values versus iteration number for a typical edge segment in a contact features, determined by a prior art single-variable solver and by the method of FIG. 6;

FIG. 8 is a histogram of edge placement errors after applying OPC corrections determined using a prior art single-variable solver; and

FIG. 9 is a histogram of edge placement errors after applying OPC corrections determined using the method of FIG. 6.

DETAILED DESCRIPTION

The method of the invention tracks how the collective movement of edge segments in a mask layout alters the resist image values at control points in the layout and simultaneously determines a correction amount for each edge segment in the layout. FIG. 5 is a diagram of contact features 510 and 512 including edge segments and control points. Contact feature 510 has four edge segments whose locations can be adjusted, and each edge segment has one control point. For example edge segment 522 has a control point 524. As contact features 510 and 512 are relatively small features, moving an edge segment, for example edge segment 522, affects the resist image value at that edge segment's control point (e.g., control point 524) and also affects the resist image values at the control points of the other three edge segments of the contact feature. And for contact features that are placed close together in the layout, moving an edge segment of one contact feature also affects the resist image values at the control points of edge segments in neighboring contact features. Similar effects on resist image values at control points due to movements of neighboring edge segments can be observed in mask layouts for non-contact layers.

FIG. 6 is a flowchart of method steps for simultaneously solving for corrections for edge segments in a mask layout, according to one embodiment of the invention. Optionally, for a large mask layout, the layout is first subdivided into patches, which are typically 20 μm×20 μm to 60 μm×60 μm is area, before applying OPC; after OPC has been applied the patches are combined together to produce the final post-OPC layout. In step 610, a resist image (RI) is simulated using a design layout (pre-OPC layout). The resist image may be simulated using a photolithography simulation system such as that disclosed in U.S. Pat. No. 7,003,758, the subject matter of which is hereby incorporated by reference in its entirety. In step 612, assuming there exist n movable edge segments, the edge segments in the design layout are perturbed (i.e., moved) by a predetermined distance, which is specified by the n×1 vector {right arrow over (Δc)}₀, to produce a perturbed layout. In step 614, a resist image is simulated using the perturbed layout.

In step 616, a difference between the simulated RI values produced using the design layout and the simulated RI values produced using the perturbed layout are determined for each edge segment. These differences are used to create an initial multisolver matrix, A₀. The initial multisolver matrix is an n×n matrix, where n is the number of edge segments in the layout, which for some masks can be more than a million. The initial multisolver matrix is a diagonal matrix in which the i-th diagonal entry, where i=1, . . . , N, is computed as the differences between the simulated RI values of the i-th segment ΔRI_(i) divided by the amount of the perturbation of the i-th segment Δc_(0,i). Mathematically, the i-th diagonal entry of A₀ is given by:

$\left\lbrack A_{0} \right\rbrack_{ii} = {\frac{\Delta\;{RI}_{i}}{\Delta\; c_{0,i}}.}$ In other words, initially it is assumed that the edge segments do not interact; the changes in each edge segment's RI value is attributed to that edge segment only. As a diagonal matrix, the off-diagonal elements of A₀ are identically zero. That is, [A₀]_(ij)=0 for i≠j.

In step 618, a correction delta vector for the edge segments in the layout is determined using a pseudoinverse of the multisolver matrix. The correction delta vector {right arrow over (Δc)} includes a correction delta value for each edge segment. The values for the correction delta vector are determined by first computing the difference between the desired RI values and the latest simulated RI values determined in step 616 (or later in step 622) and then multiplying the pseudoinverse of the multisolver matrix by the difference: {right arrow over (Δc)}=A _(k) ⁺·({right arrow over (0)}−{right arrow over (F)}({right arrow over (c _(k))})) where A_(k) ⁺ is the pseudoinverse of the multisolver n×n matrix, {right arrow over (0)} is an n×1 vector representing the desired RI values, {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated RI values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))}, and k is an index of the iterations of step 618.

The pseudoinverse of the multisolver matrix is used because the multisolver matrix can be singular or close to being singular, or since it may not always be a square matrix, if the problem is generalized such that the number of control point where RI values are obtained is not the same as the number of adjustable edge segment, the true inverse may not always be calculable. The pseudoinverse of the multisolver matrix, A_(k) ⁺ is defined as follows: A _(k) ⁺=(αI+A _(k) ^(T) A _(k))⁻¹ A _(k) ^(T) where A_(k) ^(T) is the transpose of the multisolver matrix, I is the n×n identity matrix, and α is an adjustable positive multiplicative factor applied to the identity matrix. The value of α is preferably set to a default value but it may be adjusted to optimize the overall performance of the method of FIG. 6.

As the multisolver matrix resulting from the method of FIG. 6 may grow to be as large as 1 million×1 million, the multisolver matrix A is preferably expressed as three components: A≡A ₀ +PQ ^(T)ε

^(n×n) where A₀ is the initial multisolver matrix, which is a diagonal matrix, P and Q are n×p matrices, where n is the number of edge segments and p is the number of columns of P and Q, where p<<n. Since p=0 initially, the matrices P and Q are initially empty. The columns of P and Q are populated by the updates to the multisolver matrix, as described below in conjunction with step 624. As the number of updates increases with the number of iterations, optionally the maximum number of updates that are stored in the matrices P and Q can be limited. For example, the maximum value of p can be limited to p_(max) and the p_(max)-most recent updates are stored. Expressing the multisolver matrix as these three components allows for efficient storage of the multisolver matrix and also for efficient calculation of the correction delta vector as described below. For example, assuming n=1,000,000 and p=10, to store the n×n multisolver matrix A as it is using a floating-point representation would consume n×n×4=4 trillion bytes. In contrast, storing the diagonal entries of the initial multisolver matrix A₀ and matrices P and Q will consume (n+n×p×2)×4=84 million bytes only.

With the creation of interim matrices, the correction delta vector is calculated as follows: {right arrow over (Δc)}=└Λ ⁻¹ −G(D ⁻¹ +C ^(T) G)⁻¹ G ^(T)┘(A ₀ +QP ^(T))·({right arrow over (0)}−{right arrow over (F)}({right arrow over (c _(k))})) where Λ⁻¹≡(αI+A₀A₀)⁻¹, a diagonal matrix; C≡[Q A₀P], an n×2p matrix, G≡Λ⁻¹C, an n×2p matrix; and

${D \equiv \begin{bmatrix} {P^{T}P} & I \\ I & 0 \end{bmatrix}},$ a 2p×2p matrix. By first expressing the multisolver matrix as three components and creating the interim matrices, calculating the correction delta vector is performed efficiently. Specifically, the inverse of (D⁻¹+C^(T)G) in the above equation can be computed quickly, since (D⁻¹+C^(T)G) is an 2p×2p matrix, where p is typically equal to 10. For example, assuming that n=400,000 and p=10, the correction delta vector is determined using the above equation by computing the inverse of a 20×20 matrix, instead of computing the inverse of a 400,000×400,000 matrix. Calculating the correction delta vector using the above equation where the multisolver matrix is a 400,000×400,000 matrix can be performed in about one second. In contrast, just inverting a 400,000×400,000 matrix using a brute force method would take over two years. To further speed up the computation, the inverse of D can be computed analytically as:

$D^{- 1} \equiv {\begin{bmatrix} 0 & I \\ I & {{- P^{T}}P} \end{bmatrix}.}$ In one embodiment, at each iteration, a correction delta vector {right arrow over (Δc)} that minimizes |A{right arrow over (Δc)}+{right arrow over (F)}({right arrow over (c_(k))})|²+α|{right arrow over (Δc)}|² is computed. It is possible to assign different priorities, or weighting factors, to the edge segments. A diagonal matrix W, where the non-negative weighting factors appear on the diagonal, is introduced, where |W[A{right arrow over (Δc)}+{right arrow over (F)}({right arrow over (c_(k))})]|²+α|{right arrow over (Δc)}|² is minimized. In one embodiment, the quantities A and {right arrow over (F)}({right arrow over (c_(k))}) are replaced with: A←WA {right arrow over (F)}({right arrow over (c_(k))})←W{right arrow over (F)}({right arrow over (c_(k))}) when computing the correction delta vector. In another embodiment using the optimized matrix representation A≡A₀+PQ^(T)ε

^(n×n), the quantities A₀, P, and {right arrow over (F)}({right arrow over (c_(k))}) are replaced with: A₀←WA₀ P←WP {right arrow over (F)}({right arrow over (c_(k))})←W{right arrow over (F)}({right arrow over (c_(k))}) when computing the correction delta vector. By default, the matrix W is equal to the identity matrix. If a large weighting factor (>>1) is assigned to the i-th diagonal of W that corresponds to the i-th segment, at each iteration, the EPE of the i-th segment will preferably be reduced more than the EPE for the remaining segments because the i-th segment's EPE is amplified by the weighting factor.

In step 620, a damping factor is applied to the correction delta vector and the edge segments in the layout are moved by the values in the damped correction delta vector, such that the next position of the edge segments is {right arrow over (c _(k))}₊₁={right arrow over (c _(k))}+{right arrow over (Δc)}·damping. The damping factor is a value between zero and one that is applied to the correction delta vector so that the next position of the edge segments is not too aggressive. Then, in step 622, a resist image is simulated using the latest version of the layout. In step 624, the multisolver matrix is updated based on changes in the RI values caused by the changes in position of the edge segments. Updating the multisolver matrix is necessary because the multisolver matrix, which relates changes in the correction values to the RI values linearly, changes when the edge segments are moved. If a vector {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k))}₊₁)−{right arrow over (F)}({right arrow over (c_(k))}) and a vector {right arrow over (s)} is defined as {right arrow over (c_(k))}₊₁−{right arrow over (c_(k))}, then to update the multisolver matrix

$A,{{{if}\mspace{14mu}{\overset{->}{s}}} > 0},\frac{\left( {\overset{->}{y} - {A_{k}\overset{->}{s}}} \right)}{\overset{->}{s}}$ is added as a new column to the matrix

$P\mspace{14mu}{and}\mspace{14mu}\frac{\overset{->}{s}}{\overset{->}{s}}$ is added as a new column to the matrix Q. As a result of the update, the initially diagonal multisolver matrix A is no longer diagonal. The value of the multisolver matrix at the i-th row and the j-th column can be interpreted as the linear change in the RI value of the i-th edge segment caused by a positional change of the j-th edge segment. If A is not expressed as A≡A₀+PQ^(T) but instead is used directly, the updated multisolver matrix can be obtained as, if

${\overset{\rightarrow}{s}} > {0\text{:}}$

$A_{k + 1} = {A_{k} + \frac{\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right){\overset{\rightarrow}{s}}^{T}}{{\overset{\rightarrow}{s}}^{2}}}$

In step 626, it is determined whether adjustments of the locations of the edge segments in the layout is finished. In one embodiment, the adjustments are finished when a predetermined number of iterations of steps 618-624 have been completed. In the predetermined number of iterations have not been completed, the method returns to step 618. In another embodiment, the adjustments are finished when a figure of merit is satisfied. The figure of merit may be satisfied when the sum of the edge placement errors squared for the layout is minimized or below a predetermined threshold. If the figure of merit is not satisfied, the method returns to step 618. If the adjustments are finished, then in step 628 the latest version of the layout is used as the post-OPC layout, which is typically then used to manufacture a mask.

The method of FIG. 6 may be implemented in software or in hardware. Embodiments of the method of FIG. 6 implemented in software can be executed on any appropriate computer system. The method of FIG. 6 can be applied to any mask layout for any type of mask layer, for example contact layers and poly layers, and any type of mask, for example bright-field masks or dark-field masks. The method of FIG. 6 can also be applied to mask layouts for masks used in double-dipole illumination photolithography. Correction delta vectors can be determined for each of the two mask layouts used in double-dipole illumination such that the aerial image at low contrast is equal to zero and the resist image values from both masks is equal to zero.

FIG. 7 is a diagram of plots of resist image values versus iteration number for a typical edge segment in a contact features, determined by a prior art single-variable solver and by the method of FIG. 6. As shown, the RI values resulting from corrections determined using the multisolver method of FIG. 6 converges faster (at iteration 11) to the desired RI value of zero than the prior art single-variable solver (at iteration 29).

FIG. 8 is a histogram of edge placement errors after applying OPC corrections determined using a prior art single-variable solver after six OPC iterations. The distribution shown in FIG. 8 ranges from 1.0 to 4.2 nm, and the distribution has a root-mean-square (RMS) value of 0.61 nm. FIG. 9 is a histogram of edge placement errors after applying OPC corrections determined using the method of FIG. 6 after six OPC iterations. The distribution shown in FIG. 9 ranges from 1.0 to 1.7 nm, and the distribution has an RMS value of 0.11 nm. Thus, using the multivariable-solver method of FIG. 6 to determine corrections for edge segments produced fewer edge placement error “defects” and the distribution of edge placement errors is narrower.

The invention has been described above with reference to specific embodiments. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The foregoing description and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. 

1. A computer-implemented method comprising: simulating, by the computer, a photolithography process using a mask layout to produce a first simulated resist image; perturbing each edge segment in the mask layout by a predetermined amount to produce an initial perturbed layout; simulating, by the computer, the photolithography process using the initial perturbed layout to produce a second simulated resist image; determining, by the computer, a difference resist image value between the first simulated resist image and the second simulated resist image for each edge segment; creating, by the computer, a multisolver matrix that includes the difference resist image values for all edge segments; determining, by the computer, a correction delta vector using a pseudoinverse of the multisolver matrix, wherein the correction delta vector includes a correction delta value for each edge segment; perturbing each edge segment in the perturbed layout by the corresponding correction delta value in the correction delta vector to create a further perturbed layout; simulating, by the computer, the photolithography process using the further perturbed layout to produce a third simulated resist image; updating, by the computer, the multisolver matrix based on the third simulated resist image values for each edge segment; and updating, by the computer, the correction delta vector using a pseudoinverse of the updated multisolver matrix.
 2. The method of claim 1, wherein the pseudoinverse of the multisolver matrix, A⁺, is defined as A⁺ = (α I + A^(T)A)⁻¹A^(T) where A^(T) is the transpose of the multisolver matrix, I is the identity matrix, and α is an adjustable positive multiplicative factor applied to the identity matrix.
 3. The method of claim 2, wherein an initial multisolver matrix A₀ is a diagonal matrix in which the i-th diagonal entry is determined by $\left\lbrack A_{0} \right\rbrack_{ii} = {\frac{\Delta\;{RI}_{i}}{\Delta\; c_{0,i}}.}$ where Δc₀, i is the amount of the perturbation of the i-th edge segment and ΔRI_(i) is the change in the resist image value for the i-th edge segment as a result of the perturbation.
 4. The method of claim 1, wherein the multisolver matrix, A, is expressed as A ≡ A₀ + PQ^(T)ɛ^(n × n), where A₀ is an initial multisolver matrix, which is a diagonal matrix, P and Q are n×p matrices, where n is the number of edge segments and p is the number of columns of P and Q.
 5. The method of claim 4, wherein the initial multisolver matrix A₀ is a diagonal matrix in which the i-th diagonal entry is determined by ${\left\lbrack A_{0} \right\rbrack_{ii} = \frac{\Delta\;{RI}_{i}}{\Delta\; c_{0,i}}},$ where Δc₀, i is the amount of the perturbation of the i-th edge segment and 66 RI_(i) is the change in the resist image value for the i-th edge segment as a result of the perturbation.
 6. The method of claim 2, wherein determining a correction delta vector comprises $\overset{\rightarrow}{\Delta\; c} = {\overset{\rightarrow}{A_{k}^{+}} \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}$ where A_(k) ⁺ is the pseudoinverse of the multisolver n×n matrix, {right arrow over (0)} is an n×1 vector representing desired resist image values, {right arrow over (F)} ({right arrow over (c_(k))})) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))} and k is the iteration number.
 7. The method of claim 4, wherein determining a correction delta vector comprises $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {\Lambda^{- 1} - {{G\left( {D^{- 1} + {C^{T}G}} \right)}^{- 1}G^{T}}} \right\rbrack{\left( {A_{0} + {QP}^{T}} \right) \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}}$ where Λ⁻¹≡(αI+A₀A₀)⁻¹, a diagonal matrix; C≡[Q A₀P], an n×2p matrix; ${D \equiv \begin{bmatrix} {P^{T}P} & I \\ I & 0 \end{bmatrix}},$ a 2p×2p matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))} and k is the iteration number.
 8. The method of claim 1, further comprising applying a damping factor to each value in the correction delta vector.
 9. The method of claim 4, wherein updating the multisolver matrix includes: if ${{\overset{\rightarrow}{s}} > 0},{{adding}\mspace{14mu}\frac{\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right)}{\overset{\rightarrow}{s}}}$ as a new column to P and adding $\frac{\overset{\rightarrow}{s}}{\overset{\rightarrow}{s}}$ as a new column to Q, where {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k+1))})−{right arrow over (F)}({right arrow over (c_(k))}), {right arrow over (s)} is defined as {right arrow over (c_(k+1))}−{right arrow over (c_(k))}, and {right arrow over (c_(k))} is a vector specifying the positions of the edge segments at the k-th iteration.
 10. The method of claim 2, wherein updating the multisolver matrix includes: ${{{\overset{\rightarrow}{s}} > 0}:A_{k + 1}} = {\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right){\overset{\rightarrow}{s^{T}}/{\overset{\rightarrow}{s}}^{2}}}$ where {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k+1))})−{right arrow over (F)}({right arrow over (c_(k))}), {right arrow over (s)} is defined as {right arrow over (c_(k+1))}−{right arrow over (c_(k))}, and {right arrow over (c_(k))} is a vector specifying the positions of the edge segments at the k-th iteration.
 11. The method of claim 1 wherein the mask layout is a layout of a contact layer.
 12. The method of claim 1 wherein the mask layout is a layout of a poly layer.
 13. The method of claim 1, wherein non-negative weighting factors are assigned to the edge segments.
 14. The method of claim 2, wherein non-negative weighting factors are assigned to the edge segments such that determining the correction delta vector comprises: $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {{\alpha\; I} + {A_{k}W^{T}{WA}_{k}}} \right\rbrack^{- 1}A_{k}{W^{T} \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}}$ where A_(k) ⁺ is the pseudoinverse of the multisolver n×n matrix, {right arrow over (0)} is an n×1 vector representing desired resist image values, {right arrow over (F)}({right arrow over (c_(k))})) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))} and k is the iteration number.
 15. The method of claim 4, wherein non-negative weighting factors are assigned to the edges segments such that determining the correction delta vector comprises: $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {\Lambda^{- 1} - {{G\left( {D^{- 1} + {C^{T}G}} \right)}^{- 1}G^{T}}} \right\rbrack{\left( {{WA}_{0} + {Q({WP})}^{T}} \right) \cdot \left( {\overset{\rightarrow}{0} - {W{\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}}} \right)}}$ where Λ⁻¹≡(αI+WA₀WA₀)⁻¹, a diagonal matrix; C≡[Q WA₀ WP], an n×2p matrix; ${D \equiv \begin{pmatrix} {P^{T}W^{T}P} & I \\ I & 0 \end{pmatrix}},$ a 2p×2p matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))}, k is the iteration number, and W is a diagonal matrix with non-negative weighting factors on the diagonal.
 16. A computer program product comprising a computer storage medium for storing instructions for performing: simulating a photolithography process using a mask layout to produce a first simulated resist image; perturbing each edge segment in the mask layout by a predetermined amount to produce an initial perturbed layout; simulating the photolithography process using the initial perturbed layout to produce a second simulated resist image; determining a difference resist image value between the first simulated resist image and the second simulated resist image for each edge segment; creating a multisolver matrix that includes the difference resist image values for all edge segments; determining a correction delta vector using a pseudoinverse of the multisolver matrix, wherein the correction delta vector includes a correction delta value for each edge segment; perturbing each edge segment in the perturbed layout by the corresponding correction delta value in the correction delta vector to create a further perturbed layout; simulating the photolithography process using the further perturbed layout to produce a third simulated resist image; updating the multisolver matrix based on the third simulated resist image values for each edge segment; and updating the correction delta vector using a pseudoinverse of the updated multisolver matrix.
 17. The computer program product of claim 16, wherein the pseudoinverse of the multisolver matrix, A⁺, is defined as A⁺ = (α I + A^(T)A)⁻¹A^(T) where A^(T) is the transpose of the multisolver matrix, I is the identity matrix, and α is an adjustable positive multiplicative factor applied to the identity matrix.
 18. The computer program product of claim 17, wherein an initial multisolver matrix A₀ is a diagonal matrix in which the i-th diagonal entry is determined by ${\left\lbrack A_{0} \right\rbrack_{ii} = \frac{\Delta\;{RI}_{i}}{\Delta\; c_{0,i}}},$ where Δ c₀, i is the amount of the perturbation of the i-th edge segment and Δ RI_(i) is the change in the resist image value for the i-th edge segment as a result of the perturbation.
 19. The computer program product of claim 16, wherein the multisolver matrix, A, is expressed as A ≡ A₀ + PQ^(T)ɛ^(n × n), where A₀ is an initial multisolver matrix, which is a diagonal matrix, P and Q are n×p matrices, where n is the number of edge segments and p is the number of columns of P and Q.
 20. The computer program product of claim 19, wherein the initial multisolver matrix A₀ is a diagonal matrix in which the i-th diagonal entry is determined by ${\left\lbrack A_{0} \right\rbrack_{ii} = \frac{\Delta\;{RI}_{i}}{\Delta\; c_{0,i}}},$ where Δ c₀, i is the amount of the perturbation of the i-th edge segment and ΔRI_(i) is the change in the resist image value for the i-th edge segment as a result of the perturbation.
 21. The computer program product of claim 17, wherein determining a correction delta vector comprises $\overset{\rightarrow}{\Delta\; c} = {{\overset{\rightarrow}{A}}_{k}^{+} \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}$ where A_(k) ⁺ is the pseudoinverse of the multisolver n×n matrix, {right arrow over (0)} is an n×1 vector representing desired resist image values, F(c_(k))) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))} and k is the iteration number.
 22. The computer program product of claim 19, wherein determining a correction delta vector comprises $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {\Lambda^{- 1} - {{G\left( {D^{- 1} + {C^{T}G}} \right)}^{- 1}G^{T}}} \right\rbrack{\left( {A_{0} + {QP}^{T}} \right) \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}}$ where Λ⁻¹≡(αI+A₀A₀)⁻¹, a diagonal matrix; C≡[Q A₀ P], an n×2p matrix; ${D \equiv \begin{bmatrix} {P^{T}P} & I \\ I & 0 \end{bmatrix}},$ a 2p×2p matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k) )}and k is the iteration number.
 23. The computer program product of claim 16, further including instructions for applying a damping factor to each value in the correction delta vector.
 24. The computer program product of claim 19, wherein updating the multisolver matrix includes: if ${{\overset{\rightarrow}{s}} > 0},{{adding}\mspace{14mu}\frac{\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right)}{\overset{\rightarrow}{s}}}$ as a new column to P and adding $\frac{\overset{\rightarrow}{s}}{\overset{\rightarrow}{s}}$ as a new column to Q, where {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k+1))})−{right arrow over (F)}({right arrow over (c_(k))}), {right arrow over (s)} is defined as {right arrow over (c_(k+1))}−{right arrow over (c_(k))}, and {right arrow over (c_(k))} is a vector specifying the positions of the edge segments at the k-th iteration.
 25. The computer program product of claim 17, wherein updating the multisolver matrix includes: ${{{\overset{\rightarrow}{s}} > 0}:A_{k + 1}} = {\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right){{\overset{\rightarrow}{s}}^{T}/{\overset{\rightarrow}{s}}^{2}}}$ where {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k+1))})−{right arrow over (F)}({right arrow over (c_(k))}), {right arrow over (s)} is defined as {right arrow over (c_(k+1))}−{right arrow over (c_(k))}, and {right arrow over (c_(k))} is a vector specifying the positions of the edge segments at the k-th iteration.
 26. The computer program product of claim 16 wherein the mask layout is a layout of a contact layer.
 27. The computer program product of claim 16 wherein the mask layout is a layout of a poly layer.
 28. The computer program product of claim 16, wherein non-negative weighting factors are assigned to the edge segments.
 29. The computer program product of claim 17, wherein non-negative weighting factors are assigned to the edge segments such that determining the correction delta vector comprises: $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {{\alpha\; I} + {A_{k}W^{T}{WA}_{k}}} \right\rbrack^{- 1}A_{k}{W^{T} \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}}$ where A_(k) is the multisolver matrix at the k-th iteration; {right arrow over (I)} is the identity matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))}; k is the iteration number, and W is a diagonal matrix with non-negative weighting factors on the diagonal.
 30. The computer program product of claim 19, wherein non-negative weighting factors are assigned to the edges segments such that determining the correction delta vector comprises: $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {\Lambda^{- 1} - {{G\left( {D^{- 1} + {C^{T}G}} \right)}^{- 1}G^{T}}} \right\rbrack{\left( {{WA}_{0} + {Q({WP})}^{T}} \right) \cdot \left( {\overset{\rightarrow}{0} - {W{\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}}} \right)}}$ where Λ⁻¹≡(αI+WA₀WA₀)⁻¹, a diagonal matrix; C≡[Q WA₀ WP], an n×2p matrix; ${D \equiv \begin{pmatrix} {P^{T}W^{T}P} & I \\ I & 0 \end{pmatrix}},$ a 2p×2p matrix; 0 is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))}, k is the iteration number, and W is a diagonal matrix with non-negative weighting factors on the diagonal.
 31. A system that generates mask image data for a mask layout that includes edge segments, the system comprising a computer adapted to determine locations of the edge segments by: simulating a photolithography process using a mask layout to produce a first simulated resist image; perturbing each edge segment in the mask layout by a predetermined amount to produce an initial perturbed layout; simulating the photolithography process using the initial perturbed layout to produce a second simulated resist image; determining a difference resist image value between the first simulated resist image and the second simulated resist image for each edge segment; creating a multisolver matrix that includes the difference resist image values for all edge segments; determining a correction delta vector using a pseudoinverse of the multisolver matrix, wherein the correction delta vector includes a correction delta value for each edge segment; perturbing each edge segment in the perturbed layout by the corresponding correction delta value in the correction delta vector to create a further perturbed layout; simulating the photolithography process using the further perturbed layout to produce a third simulated resist image; updating the multisolver matrix based on the third simulated resist image values for each edge segment; and updating the correction delta vector using a pseudoinverse of the updated multisolver matrix.
 32. The system of claim 31, wherein the pseudoinverse of the multisolver matrix, A⁺, is defined as A⁺ = (α I + A^(T)A)⁻¹A^(T) where A^(T) the transpose of the multisolver matrix, I is the identity matrix, and α is an adjustable positive multiplicative factor applied to the identity matrix.
 33. The system of claim 32, wherein an initial multisolver matrix A₀ is a diagonal matrix in which the i-th diagonal entry is determined by ${\left\lbrack A_{0} \right\rbrack_{ii} = \frac{\Delta\;{RI}_{i}}{\Delta\; c_{0,i}}},$ where Δ c₀, i is the amount of the perturbation of the i-th edge segment and Δ RI_(i) is the change in the resist image value for the i-th edge segment as a result of the perturbation.
 34. The system of claim 31, wherein the multisolver matrix, A, is expressed as A ≡ A₀ + PQ^(T)ɛ^(n × n), where A₀ is an initial multisolver matrix, which is a diagonal matrix, P and Q are n×p matrices, where n is the number of edge segments and p is the number of columns of P and Q.
 35. The system of claim 34, wherein the initial multisolver matrix A₀ is a diagonal matrix in which the i-th diagonal entry is determined by ${\left\lbrack A_{0} \right\rbrack_{ii} = \frac{\Delta\;{RI}_{i}}{\Delta\; c_{0,i}}},$ where Δ c₀, i is the amount of the perturbation of the i-th edge segment and Δ RI_(i) is the change in the resist image value for the i-th edge segment as a result of the perturbation.
 36. The system of claim 32, wherein determining a correction delta vector comprises $\overset{\rightarrow}{\Delta\; c} = {{\overset{\rightarrow}{A}}_{k}^{+} \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}$ where A_(k) ⁺ is the pseudoinverse of the multisolver n×n matrix, {right arrow over (0)} is an n×1 vector representing desired resist image values, {right arrow over (F)}({right arrow over (c_(k))})) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))} and k is the iteration number.
 37. The system of claim 34, wherein determining a correction delta vector comprises $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {\Lambda^{- 1} - {{G\left( {D^{- 1} + {C^{T}G}} \right)}^{- 1}G^{T}}} \right\rbrack{\left( {A_{0} + {QP}^{T}} \right) \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}}$ where Λ⁻¹≡(αI+A₀A₀)⁻¹, a diagonal matrix; C≡[Q A₀P], an n×2p matrix; ${D \equiv \begin{bmatrix} {P^{T}P} & I \\ I & 0 \end{bmatrix}},$ a 2p×2p matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))} and k is the iteration number.
 38. The system of claim 31, further comprising applying a damping factor to each value in the correction delta vector.
 39. The system of claim 34, wherein updating the multisolver matrix includes: if ${{\overset{\rightarrow}{s}} > 0},{{adding}\mspace{11mu}\frac{\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right)}{\overset{\rightarrow}{s}}}$ as a new column to P and adding $\frac{\overset{\rightarrow}{s}}{\overset{\rightarrow}{s}}$ as a new column to Q, where {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k+1))})−{right arrow over (F)}({right arrow over (c_(k))}), {right arrow over (s)} is defined as {right arrow over (c_(k+1))}−{right arrow over (c_(k))}, and {right arrow over (c_(k))} is a vector specifying the positions of the edge segments at the k-th iteration.
 40. The system of claim 32, wherein updating the multisolver matrix includes: ${{{\overset{\rightarrow}{s}} > 0}:A_{k + 1}} = {\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right){{\overset{\rightarrow}{s}}^{T}/{\overset{\rightarrow}{s}}^{2}}}$ where {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k+1))})−{right arrow over (F)}({right arrow over (c_(k))}), {right arrow over (s)} is defined as {right arrow over (c_(k+1))}−{right arrow over (c_(k))}, and {right arrow over (c_(k))} is a vector specifying the positions of the edge segments at the k-th iteration.
 41. The system of claim 31, wherein the mask layout is a layout of a contact layer.
 42. The system of claim 31 wherein the mask layout is a layout of a poly layer.
 43. The system of claim 31, wherein non-negative weighting factors are assigned to the edge segments.
 44. The system of claim 32, wherein non-negative weighting factors are assigned to the edge segments such that determining the correction delta vector comprises: $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {{\alpha\; I} + {A_{k}W^{T}{WA}_{k}}} \right\rbrack^{- 1}A_{k}{W^{T} \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}}$ where A_(k) is the multisolver matrix at the k-th iteration; {right arrow over (I)} is the identity matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))}; k is the iteration number, and W is a diagonal matrix with non-negative weighting factors on the diagonal.
 45. The system of claim 34, wherein non-negative weighting factors are assigned to the edges segments such that determining the correction delta vector comprises: $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {\Lambda^{- 1} - {{G\left( {D^{- 1} + {C^{T}G}} \right)}^{- 1}G^{T}}} \right\rbrack{\left( {{WA}_{0} + {Q({WP})}^{T}} \right) \cdot \left( {\overset{\rightarrow}{0} - {W{\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}}} \right)}}$ where Λ⁻¹≡(αI+WA₀WA₀)⁻¹, a diagonal matrix; C≡[Q WA₀ WP], an n×2p matrix; ${D \equiv \begin{pmatrix} {P^{T}W^{T}P} & I \\ I & 0 \end{pmatrix}},$ a 2p×2p matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))}, k is the iteration number, and W is a diagonal matrix with non-negative weighting factors on the diagonal.
 46. A method of manufacturing a mask comprising: generating mask layout that includes edge segments whose locations have been determined by: simulating a photolithography process using a mask layout to produce a first simulated resist image; perturbing each edge segment in the mask layout by a predetermined amount to produce an initial perturbed layout; simulating the photolithography process using the initial perturbed layout to produce a second simulated resist image; determining a difference resist image value between the first simulated resist image and the second simulated resist image for each edge segment; creating a multisolver matrix that includes the difference resist image values for all edge segments; determining a correction delta vector using a pseudoinverse of the multisolver matrix, wherein the correction delta vector includes a correction delta value for each edge segment; perturbing each edge segment in the perturbed layout by the corresponding correction delta value in the correction delta vector to create a further perturbed layout; simulating the photolithography process using the further perturbed layout to produce a third simulated resist image; updating the multisolver matrix based on the third simulated resist image values for each edge segment; and updating the correction delta vector using a pseudoinverse of the updated multisolver matrix; and producing a mask using the generated mask layout data.
 47. The method of claim 46, wherein the pseudoinverse of the multisolver matrix, A⁺, is defined as A⁺ = (α I + A^(T)A)⁻¹A^(T) where A^(T) is the transpose of the multisolver matrix, I is the identity matrix, and α is an adjustable positive multiplicative factor applied to the identity matrix.
 48. The method of claim 47, wherein the initial multisolver matrix A₀ is a diagonal matrix in which the i-th diagonal entry is determined by [A₀]_(ii) = Δ  RI_(i)/Δ  c₀, i, where Δ c₀, i is the amount of the perturbation of the i-th edge segment and Δ RI_(i) is the change in the resist image value for the i-th edge segment as a result of the perturbation.
 49. The method of claim 46, wherein the multisolver matrix, A, is expressed as A ≡ A₀ + PQ^(T)ɛ^(n × n), where A₀ is an initial multisolver matrix, which is a diagonal matrix, P and Q are n×p matrices, where n is the number of edge segments and p is the number of columns of P and Q.
 50. The method of claim 49, wherein an initial multisolver matrix A₀ is a diagonal matrix in which the i-th diagonal entry is determined by [A₀]_(ii) = Δ  RI_(i)/Δ  c₀, i, where Δ c₀, i is the amount of the perturbation of the i-th edge segment and Δ RI_(i) is the change in the resist image value for the i-th edge segment as a result of the perturbation.
 51. The method of claim 47, wherein determining a correction delta vector comprises $\overset{\rightarrow}{\Delta\; c} = {{\overset{\rightarrow}{A}}_{k}^{+} \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}$ ${{\overset{\rightarrow}{s}} > 0},{{adding}\mspace{11mu}\frac{\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right)}{\overset{\rightarrow}{s}}}$ as a new column to P and adding $\frac{\overset{\rightarrow}{s}}{\overset{\rightarrow}{s}}$ as a new column to Q, where {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k+1))})−{right arrow over (F)}({right arrow over (c_(k))}), {right arrow over (s)} is defined as {right arrow over (c_(k+1))}−{right arrow over (c_(k))}, and {right arrow over (c_(k))} is a vector specifying the positions of the edge segments at the k-th iteration.
 52. The method of claim 49, wherein determining a correction delta vector comprises $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {\Lambda^{- 1} - {{G\left( {D^{- 1} + {C^{T}G}} \right)}^{- 1}G^{T}}} \right\rbrack{\left( {A_{0} + {QP}^{T}} \right) \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}}$ where Λ⁻¹≡(αI+A₀A₀)⁻¹, a diagonal matrix; C≡[Q A₀ P], an n×2p matrix; ${D \equiv \begin{bmatrix} {P^{T}P} & I \\ I & 0 \end{bmatrix}},$ a 2p×2p matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))})is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k) )} and k is the iteration number.
 53. The method of claim 46, further comprising applying a damping factor to each value in the correction delta vector.
 54. The method of claim 49, wherein updating the multisolver matrix includes: if where A_(k) is the multisolver matrix at the k-th iteration; {right arrow over (I)} is the identity matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))}; k is the iteration number, and W is a diagonal matrix with non-negative weighting factors on the diagonal.
 55. The method of claim 47, wherein updating the multisolver matrix includes: ${{{\overset{\rightarrow}{s}} > 0}:A_{k + 1}} = {\left( {\overset{\rightarrow}{y} - {A_{k}\overset{\rightarrow}{s}}} \right){{\overset{\rightarrow}{s}}^{T}/{\overset{\rightarrow}{s}}^{2}}}$ where {right arrow over (y)} is defined as {right arrow over (F)}({right arrow over (c_(k+1))})−{right arrow over (F)}({right arrow over (c_(k))}), {right arrow over (s)} is defined as {right arrow over (c_(k+1))}−{right arrow over (c_(k))}, and {right arrow over (c_(k))} is a vector specifying the positions of the edge segments at the k-th iteration.
 56. The method of claim 46 wherein the mask layout is a layout of a contact layer.
 57. The method of claim 46 wherein the mask layout is a layout of a poly layer.
 58. The method of claim 40, wherein non-negative weighting factors are assigned to the edge segments.
 59. The method of claim 47, wherein non-negative weighting factors are assigned to the edge segments such that determining the correction delta vector comprises: $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {{\alpha\; I} + {A_{k}W^{T}{WA}_{k}}} \right\rbrack^{- 1}A_{k}{W^{T} \cdot \left( {\overset{\rightarrow}{0} - {\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}} \right)}}$ where A_(k) is the multisolver matrix at the k-th iteration; {right arrow over (I)} is the identity matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c)}_(k); k is the iteration number, and W is a diagonal matrix with non-negative weighting factors on the diagonal.
 60. The method of claim 43, wherein non-negative weighting factors are assigned to the edges segments such that determining the correction delta vector comprises: $\overset{\rightarrow}{\Delta\; c} = {\left\lbrack {\Lambda^{- 1} - {{G\left( {D^{- 1} + {C^{T}G}} \right)}^{- 1}G^{T}}} \right\rbrack{\left( {{WA}_{0} + {Q({WP})}^{T}} \right) \cdot \left( {\overset{\rightarrow}{0} - {W{\overset{\rightarrow}{F}\left( \overset{\rightarrow}{c_{k}} \right)}}} \right)}}$ where Λ⁻¹≡(αI+WA₀WA₀)⁻¹, a diagonal matrix; C≡[Q WA₀ WP], an n×2p matrix; ${D \equiv \begin{pmatrix} {P^{T}W^{T}P} & I \\ I & 0 \end{pmatrix}},$ a 2p×2p matrix; {right arrow over (0)} is an n×1 vector representing desired resist image values; {right arrow over (F)}({right arrow over (c_(k))}) is an n×1 vector representing the latest simulated resist image values when the edge segments have been moved to the position values as specified by the vector {right arrow over (c_(k))}, k is the iteration number, and W is a diagonal matrix with non-negative weighting factors on the diagonal. 